<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>AngelScript: Good practices</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">AngelScript
   
   </div>
   
  </td>
  
  
  
   
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('doc_good_practice.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">Good practices </div>  </div>
</div>
<div class="contents">
<div class="textblock"><p>This article will try to explain some good practices, that will help you get going faster and easier find the solution when a problem occurs.</p>
<h2><a class="anchor" id="doc_checkretval"></a>
Always check return values for registrations</h2>
<p>When configuring the script engine you should always check the return values, at least in debug mode. All error codes are negative so a simple <code>assert( r &gt;= 0 )</code> where r is the returned value is sufficient to pinpoint where the configuration failed.</p>
<p>If a function failed during the configuration, the <a class="el" href="classas_i_script_module.html#a8acf107194c5f079d7f7507309ebe613">Build</a> method will always fail with a return code of <a class="el" href="angelscript_8h.html#a6e2a1647f02f2c5da931bab09e860f54a7416ebaf18f32e180595fb366a072754">asINVALID_CONFIGURATION</a>. Unless you already verified the error codes for all the configuration calls, it will not be possible to determine what the error was.</p>
<div class="fragment"><pre class="fragment"><span class="comment">// Verifying the return code with an assert is simple and won&#39;t pollute the code</span>
r = engine-&gt;<a class="code" href="classas_i_script_engine.html#a754fafd069d8e0c19baff2dc222893b0" title="Registers a global function.">RegisterGlobalFunction</a>(<span class="stringliteral">&quot;void func()&quot;</span>, <a class="code" href="angelscript_8h.html#a78f8f2c7f1c88b12e74a5ac47b4184ae" title="Returns an asSFuncPtr representing the function specified by the name.">asFUNCTION</a>(func), <a class="code" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a68ae43cc91cdfc3fa4590c9e6164e4f4" title="A cdecl function.">asCALL_CDECL</a>); assert( r &gt;= 0 );
</pre></div><p><code>assert()</code> can safely be used with engine registrations, since the engine will set the internal state to invalid configuration if a function fails. Even in release mode the failure is discovered when a script is built.</p>
<h2><a class="anchor" id="doc_usemsgcallbck"></a>
Use the message callback to receive detailed error messages</h2>
<p>The return code from the register functions, <a class="el" href="classas_i_script_module.html#a8acf107194c5f079d7f7507309ebe613">Build</a>, and <a class="el" href="classas_i_script_module.html#a1258d7cfeed965f36ba312beeb49e81c">CompileFunction</a>, can only tell you that something was wrong, not what it was. To help identify the exact problem the message callback should be used. The script library will then send messages explaining the error or warning in clear text.</p>
<p>See <a class="el" href="doc_compile_script.html#doc_compile_script_msg">Message callback</a> for more information on the message callback. </p>
</div></div>
</div>
  <div id="nav-path" class="navpath">
    <ul>

    <li class="footer">Generated on Sun Jan 29 2012 15:41:04 for AngelScript by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.5.1 </li>
   </ul>
 </div>


</body>
</html>
